// 将token 永远存在本地
import { getToken, setToken, removeToken } from '@/utils/auth'
import { login, getUseInfoAPI, getUserPhotoAPI } from '@/api/user'
// 存放共享的数据
const state = {
  token: getToken() || '', /* 设置用户的token */
  userInfo: {} /* 用户信息 */
}
const mutations = {
  setToken(state, newToken) {
    state.token = newToken
    setToken(newToken)
  },
  removeToken(state) {
    state.token = null
    removeToken()
  },
  // 设置用户信息
  setUserInfo(state, userInfo) {
    state.userInfo = userInfo
  },
  // 移除用户信息
  removeUseInfo(state) {
    state.userInfo = {}
  }
}
// 处理异步
const actions = {
  async userLogin(context, password) {
    const res = await login(password)
    context.commit('setToken', res.data)
  },
  async getUseInfoAction(context) {
    const res = await getUseInfoAPI()
    console.log(res)
    context.commit('setUserInfo', res.data)
    // 获取员工头像
    const userPhoto = await getUserPhotoAPI(res.data.userId)
    // 重新更新userInfo,将两个数据合并成完成的用户信息对象
    context.commit('setUserInfo', { ...res.data, ...userPhoto.data })
  },
  // 异步 退出登录
  removeUseInfoAction(context) {
    // 移除token
    context.commit('removeToken')
    // 移除用户信息
    context.commit('removeUseInfo')
  }
}
export default {
  namespaced: true,
  state,
  mutations,
  actions
}
